1. Technical Field
The present invention is directed to an improved data processing system and in particular to an improved data cache array for utilization in a data processing system. Still more particularly the present invention relates to an improved method and system for efficient pre-fetch performance and normal load performance of a microprocessor memory system.
2. Description of the Related Art
Many systems for processing information include both a system memory and a cache memory. A cache memory is a relatively small, high-speed memory that stores a copy of information from one or more portions of the system memory. Frequently, the cache memory is physically distinct from the system memory. Such a cache memory can be integral with the processor device of the system (referred to as an L1 cache) or non-integral with the processor (referred to as an L2 cache).
Information may be copied from a portion of the system memory into the cache memory. The information in the cache memory may then be modified. Further, modified information from the cache memory can then be copied back to a portion of the system memory. Accordingly, it is important to map information in the cache memory relative to its location within system memory. Assuming selection of an appropriately sized cache memory and the efficient of data therein the limiting factor in cache performance is the speed of the cache memory and the ability of the system to rapidly write data into or read data from the cache memory.
A cache memory typically includes a plurality of memory sections, wherein each memory section stores a block or a "line" of two or more words of data wherein a line consists of eight "doublewords" (wherein each doubleword comprises eight 8-bit bytes). Each line has associated with it an address tag that uniquely identifies which line of system memory it is a copy of. When a read request originates in the processor for a new word (or a new doubleword or a new byte), whether it is data or instruction, an address tag comparison is made to determine whether a copy of the requested word resides in a line of the cache memory. If present, the data is used directly from the cache. This event is referred to as a cache read "hit". If not present, a line containing the requested word is retrieved from system memory and stored in the cache memory. The requested word is simultaneously supplied to the processor. This event is referred to as a cache read "miss".
In addition to using a cache memory to retrieve data, the processor may also write data directly to the cache memory instead of to the system memory. When the processor desires to write data to memory, an address tag comparison is made to determine whether the line into which data is to be written resides in the cache memory. If the line is present in the cache memory, the data is written directly into the line. This event is referred to as a cache write "hit". If the line into which data is to be written does not exist in the cache memory, the line is either fetched into the cache memory from system memory to allow the data to be written into the cache, or the data is written directly into the system memory. This event is referred to as a cache write, "miss."
In cache implementations of the present invention, it is useful to perform the address tag comparisons by access of directories having an effective address (EA) in parallel with getting a Real address (RA) to verify that there is a cache line "Hit". For example, the cache of the present invention may have 2 or more data ports, each with an EA content addressable memory (ECAM) directory containing partial EA addresses and a RA content addressable memory (RCAM) directory containing RA addresses. If the ECAM access results in a Hit, the RCAM confirms the hit is true by comparing the RCAM with the RA. When performing data prefetching for the cache, a data cache controller uses a real address (RCAM) lookup cycle to check whether the prefetching line is a true hit or not. If it is a RCAM hit, the cache controller "kills" the operation. If it is a RCAM miss, the cache controller continues prefetching a line of data into the cache memory from system memory.
However, by way of limitation, using the RCAM lookup cycle for the prefetch test will use the RCAM path of one of the two data ports. Therefore it is a subject of the present invention that the data port data is really not needed by the prefetching operation. Since the prefetch access uses one data port, the cache controller has to block one of the two aforementioned EA ports so that only one is available for the critical load accesses to the cache during prefetching. As a result of this type of prior art prefetching, cache performance is affected significantly. To suspend prefetching until an EA port is free, degrades the prefetch performance.
In view of the above, it should be apparent that a method and system for improving memory pre-fetch performance to a data cache would be highly desirable